# makefile for Symphony
#
# Note: Everything in the makefile is in alphabetical order, except
#       for command* documents, which are subgrouped logically.

# a m n o p r v

PROJECT	= symphony
CC			= g++
FLAGS		= -ggdb3# -ansi -Wall -Werror -pedantic-errors
CFLAGS	= `mysql_config --cflags` `pcre-config --cflags`
LIBS		= `mysql_config --libs` `pcre-config --libs`
SRC_DIR	= src
OBJ_DIR	= obj
OBJECTS	=	$(OBJ_DIR)/account.o         \
          $(OBJ_DIR)/area.o            \
          $(OBJ_DIR)/board.o           \
          $(OBJ_DIR)/character.o       \
          $(OBJ_DIR)/command.o         \
          $(OBJ_DIR)/commands_A-F.o    \
          $(OBJ_DIR)/commands_G-M.o    \
          $(OBJ_DIR)/commands_N-P.o    \
          $(OBJ_DIR)/commands_Q-S.o    \
          $(OBJ_DIR)/commands_T-Z.o    \
          $(OBJ_DIR)/commands_aedit.o  \
          $(OBJ_DIR)/commands_medit.o  \
          $(OBJ_DIR)/commands_pedit.o  \
          $(OBJ_DIR)/commands_redit.o  \
          $(OBJ_DIR)/commands_tedit.o  \
          $(OBJ_DIR)/commandTable.o    \
          $(OBJ_DIR)/creature.o        \
          $(OBJ_DIR)/exit.o            \
          $(OBJ_DIR)/help.o            \
          $(OBJ_DIR)/log.o             \
          $(OBJ_DIR)/loginHandler.o    \
          $(OBJ_DIR)/main.o            \
          $(OBJ_DIR)/mob.o             \
          $(OBJ_DIR)/note.o            \
          $(OBJ_DIR)/object.o          \
          $(OBJ_DIR)/reset.o           \
          $(OBJ_DIR)/room.o            \
          $(OBJ_DIR)/socket.o          \
          $(OBJ_DIR)/stringutil.o      \
          $(OBJ_DIR)/tEditHandler.o    \
          $(OBJ_DIR)/timer.o           \
          $(OBJ_DIR)/timestamp.o       \
          $(OBJ_DIR)/world.o

$(PROJECT): $(OBJECTS)
	rm -rf $(PROJECT)
	$(CC) $(FLAGS) $(LIBS) $(OBJECTS) -o $(PROJECT)

$(OBJ_DIR)/account.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/definitions.h $(SRC_DIR)/account.h $(SRC_DIR)/account.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/account.cpp -o $(OBJ_DIR)/account.o

$(OBJ_DIR)/area.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/combined.h $(SRC_DIR)/area.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/area.cpp -o $(OBJ_DIR)/area.o

$(OBJ_DIR)/board.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/board.h $(SRC_DIR)/board.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/board.cpp -o $(OBJ_DIR)/board.o

$(OBJ_DIR)/character.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/combined.h $(SRC_DIR)/character.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/character.cpp -o $(OBJ_DIR)/character.o

$(OBJ_DIR)/command.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/command.h $(SRC_DIR)/command.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/command.cpp -o $(OBJ_DIR)/command.o

$(OBJ_DIR)/commands_A-F.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/command.h $(SRC_DIR)/commands_A-F.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/commands_A-F.cpp -o $(OBJ_DIR)/commands_A-F.o

$(OBJ_DIR)/commands_G-M.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/command.h $(SRC_DIR)/commands_G-M.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/commands_G-M.cpp -o $(OBJ_DIR)/commands_G-M.o

$(OBJ_DIR)/commands_N-P.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/command.h $(SRC_DIR)/commands_N-P.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/commands_N-P.cpp -o $(OBJ_DIR)/commands_N-P.o

$(OBJ_DIR)/commands_Q-S.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/command.h $(SRC_DIR)/commands_Q-S.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/commands_Q-S.cpp -o $(OBJ_DIR)/commands_Q-S.o

$(OBJ_DIR)/commands_T-Z.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/command.h $(SRC_DIR)/commands_T-Z.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/commands_T-Z.cpp -o $(OBJ_DIR)/commands_T-Z.o

$(OBJ_DIR)/commands_aedit.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/command.h $(SRC_DIR)/commands_aedit.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/commands_aedit.cpp -o $(OBJ_DIR)/commands_aedit.o

$(OBJ_DIR)/commands_medit.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/command.h $(SRC_DIR)/commands_medit.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/commands_medit.cpp -o $(OBJ_DIR)/commands_medit.o

$(OBJ_DIR)/commands_nedit.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/command.h $(SRC_DIR)/commands_nedit.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/commands_nedit.cpp -o $(OBJ_DIR)/commands_nedit.o

$(OBJ_DIR)/commands_oedit.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/command.h $(SRC_DIR)/commands_oedit.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/commands_oedit.cpp -o $(OBJ_DIR)/commands_oedit.o

$(OBJ_DIR)/commands_pedit.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/command.h $(SRC_DIR)/commands_pedit.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/commands_pedit.cpp -o $(OBJ_DIR)/commands_pedit.o

$(OBJ_DIR)/commands_redit.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/command.h $(SRC_DIR)/commands_redit.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/commands_redit.cpp -o $(OBJ_DIR)/commands_redit.o

$(OBJ_DIR)/commands_tedit.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/command.h $(SRC_DIR)/commands_tedit.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/commands_tedit.cpp -o $(OBJ_DIR)/commands_tedit.o

$(OBJ_DIR)/commandTable.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/commandTable.h $(SRC_DIR)/commandTable.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/commandTable.cpp -o $(OBJ_DIR)/commandTable.o

$(OBJ_DIR)/creature.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/combined.h $(SRC_DIR)/creature.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/creature.cpp -o $(OBJ_DIR)/creature.o

$(OBJ_DIR)/exit.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/exit.h $(SRC_DIR)/exit.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/exit.cpp -o $(OBJ_DIR)/exit.o

$(OBJ_DIR)/help.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/help.h $(SRC_DIR)/help.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/help.cpp -o $(OBJ_DIR)/help.o

$(OBJ_DIR)/loginHandler.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/loginHandler.h $(SRC_DIR)/loginHandler.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/loginHandler.cpp -o $(OBJ_DIR)/loginHandler.o

$(OBJ_DIR)/log.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/log.h $(SRC_DIR)/log.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/log.cpp -o $(OBJ_DIR)/log.o

$(OBJ_DIR)/main.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/main.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/main.cpp -o $(OBJ_DIR)/main.o

$(OBJ_DIR)/map.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/map.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/map.cpp -o $(OBJ_DIR)/map.o

$(OBJ_DIR)/mob.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/combined.h $(SRC_DIR)/mob.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/mob.cpp -o $(OBJ_DIR)/mob.o

$(OBJ_DIR)/note.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/note.h $(SRC_DIR)/note.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/note.cpp -o $(OBJ_DIR)/note.o

$(OBJ_DIR)/object.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/combined.h $(SRC_DIR)/object.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/object.cpp -o $(OBJ_DIR)/object.o

$(OBJ_DIR)/reset.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/reset.h $(SRC_DIR)/reset.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/reset.cpp -o $(OBJ_DIR)/reset.o

$(OBJ_DIR)/room.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/combined.h $(SRC_DIR)/room.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/room.cpp -o $(OBJ_DIR)/room.o

$(OBJ_DIR)/socket.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/socket.h $(SRC_DIR)/socket.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/socket.cpp -o $(OBJ_DIR)/socket.o

$(OBJ_DIR)/stringutil.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/stringutil.h $(SRC_DIR)/stringutil.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/stringutil.cpp -o $(OBJ_DIR)/stringutil.o

$(OBJ_DIR)/tEditHandler.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/tEditHandler.h $(SRC_DIR)/tEditHandler.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/tEditHandler.cpp -o $(OBJ_DIR)/tEditHandler.o

$(OBJ_DIR)/timer.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/timer.h $(SRC_DIR)/timer.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/timer.cpp -o $(OBJ_DIR)/timer.o

$(OBJ_DIR)/timestamp.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/timestamp.h $(SRC_DIR)/timestamp.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/timestamp.cpp -o $(OBJ_DIR)/timestamp.o

$(OBJ_DIR)/world.o: $(SRC_DIR)/definitions.h $(SRC_DIR)/world.h $(SRC_DIR)/world.cpp
	$(CC) -c $(FLAGS) $(CFLAGS) $(SRC_DIR)/world.cpp -o $(OBJ_DIR)/world.o

clean:
	rm -rf *~ */*~ */*/*~ $(OBJ_DIR)/*.o $(PROJECT)

